perm filename JCLDAT[MU5,LCS] blob sn#107302 filedate 1974-06-18 generic text, type T, neo UTF8
******** JCL FOR IBM360(NOT! UPDATED.) AND TEST DATA FOR MUSIC5 *******
//PASS1 EXEC FORTGLG  )0 ¬
//LKED.SYSIN DD * 
 */ 
//GO.FT02F001 DD DSNAME=&&TEMP2,DISP=(NEW,PASS),  X  
//      UNIT=DISK,SPACE=(CYL,(30,1)),VOLUME=REF=SCRPACK     
//GO.SYSIN DD *   
COMMENT:TEST SCORE TO CHECK MUSIC V PROGRAMS AND UNIT GENERATORS=  
COMMENT:USE DUMMY CONVT PROVIDED WITH PASS 2  AND DEBUG SAMOUT=    
COMMENT:INSTRUMENT DEFINITIONS= 
COMMENT:OUTPUT BOX=INS 0 1=OUT P5 B1=END=     
COMMENT:OSCILLATOR=INS 0 2=OSC P5 P6 B2 F1 P30=OUT B2 B1=END=      
COMMENT:ADD TWO GENERATOR=INS 0 3=AD2 P5 P6 B2=OUT B2 B1=END=      
COMMENT:RANDOM GENERATOR=INS 0 4=RAN P5 P6 B2 P7 P30 P29=OUT B2 B1=END=   
COMMENT:ENVELOPE=INS 0 5=ENV P5 F2 B2 P6 P7 P8 P30=OUT B2 B1=END=  
COMMENT:STEREO OUTPUT BOX=INS 0 6=STR V1 V2 B1=END=  
COMMENT:ADD THREE GENERATOR=INS 0 7=AD3 P5 P6 P7 B2=OUT B2 B1=END= 
COMMENT:ADD FOUR GENERATOR=INS 0 8=AD4 P5 P6 P7 P8 B2=OUT B2 B1=END=      
COMMENT:MULTIPLIER=INS 0 9=MLT P5 P6 B2=OUT B2 B1=END=      
COMMENT:DUMMY INST , FILTER OMITTED=INS 0 10=OUT P5 B1=END= 
COMMENT:RANDOM AND HOLD=INS 0 11=RAH P5 P6 B2 P7 P30=OUT B2 B1=END=
    
COMMENT:SETTING INTEGERS AND VARIABLES=
COMMENT:SAMPLING RATE 1000 HZ=SIA 0 4 1000=   
COMMENT:STEREO BOX INPUTS=SV3 0 1 500 999=    
COMMENT:FUNCTION DEFINITIONS=   
GEN 0 3 1 0 10 10 10 10 0 -10 -10 -10 -10 0=  
GEN 0 1 2 0 0 .990 127 .990 255 0 383 0 511=  
GEN 0 2 3 1 1=    
    
COMMENT:NOTE CARDS=      
NOT 0.005 2 .03 1000 51.1=      
NOT .04 3 .005 657 343=  
NOT 0 1 .003 777= 
NOT .05 4 .03 1000 128 512=     
NOT .09 5 .032 1000 16 8 16=    
COMMENT:TO SET MONO=SI3 .16 8 0=
NOT .13 5 .010 1000 32 64 32=   
COMMENT:TO SET STEREO=SI3 .14 8 1=     
NOT .15 6 .005=   
NOT .16 7 .005 600 200 301=     
NOT .18 9 .005 50 20=    
NOT .17 8 .005 600 150 60 301=  
NOT .22 11 .03 1000 128= 
TER .26=   
 */ 
//PASS2  EXEC  FORTGLG   
//LKED.SYSIN DD * 
 */ 
//GO.FT02F001 DD DSNAME=&&TEMP2,DISP=(OLD,DELETE)    
//GO.FT03F001 DD DSNAME=&&TEMP3,DISP=(NEW,PASS),  X  
//      UNIT=DISK,SPACE=(CYL,(30,1)),VOLUME=REF=SCRPACK     
 */ 
//PASS3  EXEC  FORTGLG   
//LKED.SYSIN DD * 
 */ 
//GO.FT03F001 DD DSNAME=&&TEMP3,DISP=(OLD,DELETE)    
 */ 
********** FOLLOWING IS IBM360 SAMPLE GENERATING ROUTINE (NOT DEBUGGED!)

//SAMGEN JOB (Y077MUS,427,1,2),SAMGEN,MSGLEVEL=1      
// EXEC   ASMGC,PARM.ASM=(DECK,LOAD,FULLXREF,ESD)     
//ASM.SYSPUNCH DD DSNAME=E404.SAMGEN,SPACE=(TRK,(10,2),RLSE),UNIT=2314,X
//    DISP=(OLD,KEEP),VOLUME=SER=SYS09       
//ASM.SYSIN DD *  
TITLE 'SAMGEN - UNIT GENERATOR ROUTINES FOR MUSIC V'  
SAMGEN   CSECT DOROTHY BENDER, JULY, 1969    
*        
********** FORTRAN CALL FROM MAIN PROGRAM OF PASS3 *****************    
*        
*     I(6)=IGEN   
*     N3  =I(IGEN)-100     
*     GO TO (OUT,OSC,AD2,RAN,ENV,STR,AD3,AD4,MLT,FLT,RAH,...,NEG),N3    
*    1   2   3   4   5   6   7   8   9   10  11  12  13        
*     GO TO (293,293,293,293,293,293,293,293,293,294,293,294,293),N3    
*293  CALL SAMGEN(I)       
*     GO TO OUT   
*294  CALL FORSAM 
*        
*        PERTINENT POINTERS IN THE I-ARRAY:  
*        
*        I(3) - THE SUBSCRIPT IN THE I-ARRAY OF THE NOTE PARAMETERS     
*      FOR THE NOTE BEING PLAYED.   
*        I(5) - THE NUMBER OF SAMPLES TO GENERATE (NSAM)       
*        I(6) - THE SUBSCRIPT IN THE I-ARRAY FOR THE INSTRUMENT
*      DEFINITION TABLE OF THE UNIT GENERATOR BEING   
*      PLAYED.    
*        
*        INITIALIZATION PROCEDURE:  
*        
*        IF S(I)←0 THEN 
S(I)
 IS AN INDEX TO THE I-ARRAY OF THE        
*        BEGINNING OF A FUNCTION OR A UNIT GENERATOR I-O BLOCK.
*        
*        IF 0←=S(I)←=262144 THEN S(I) IS THE NUMBER OF A NOTE  
*        PARAMETER (WHERE NOTE PARAMETER X IS LOCATED AT       
*        I(I(3)+X-1).      
*        
*        IF S(I)-262144 THEN S(I)-262144 IS AN INDEX IN THE I-ARRAY     
*        OF A VARIABLE (WHERE VARIABLE X IS LOCATED AT
*        I(X+100).
*        
******** REGISTER USAGE ******************************************      
*        
R511     EQU   0-511 FOR OSC FUNCTION        
L        EQU   2-BASE OF INTAB ARRAY
I3       EQU   4-I(3)      
IJ3      EQU   5-FOR INITIALIZATION TO MODIFY INST    
CONS     EQU   6-=F'262144'
INDEX    EQU   7-THE J3 REGISTER TO MODIFY CODE       
IDX      EQU   8-INCREMENT FOR LOOP 
NSAM     EQU   9-NUMBER OF SAMPLES  
N2       EQU   9-I(I(6)+1-1; END OF UNIT GEN 
TYPE     EQU   10        -I(I(6)) - UNIT GENERATOR TYPE        
WKE      EQU   10        -EVEN WORK REGISTER 
WK       EQU   11        -ODD WORK REGISTER  
N1       EQU   12        -I(6)+2; BASE OF UNIT GENERATOR       
J3       EQU   12        -MAJOR LOOP INDEX FOR FUNCT'S
I        EQU   14        -BASE OF I-ARRAY    
*        
RN1      EQU   4-FOR RAN; I(L5)     
RN3      EQU   5-FOR RAN; I(L6)     
RN2      EQU   6-FOR RAN; WORK      
SUM      EQU   7-FOR RAN,OSC; SUM (0-511)    
*        
SUME     EQU   14        -FOR ENV   
*        
RN       EQU   6-FOR RAH   
*        
IL1      EQU   1-IN OSC:AMP
IL2      EQU   2-IN OSC:FREQ        
IL3      EQU   3-IN OSC:OUTPUT      
IL4      EQU   4-IN OSC:FUNCTION    
IL5      EQU   5-IN OSC:SUM
IL6      EQU   6  
IL7      EQU   7  
*        
************** INITIALIZATION ***************************************** 
*        
USING *,15      -BASE REGISTER      
SAVE  (14,12),,*-SAVE CALLER'S REGISTERS     
L     I,0(1)    -SET UP BASE OF I   
LA    I,0(I)    -GET RID OF HIGH-ORDER BIT   
LA    IDX,4       
SR    I,IDX       
*        
L     I3,12(I)  -SAVE I(3);NOTE PARAMETERS SUB        
*        
L     N1,24(I)  -I(6)      
SLL   N1,2        
AR    N1,I       BASE FOR UNIT GENERATOR DES 
*        
L     TYPE,0(N1)-I(I(6))   
LA    WK,100      
SR    TYPE,WK     
SLL   TYPE,2     TYPE OF UNIT GENERATOR      
*        
L     N2,4(N1)  -(I(I(6)+1)-1       
SLL   N2,2        
AR    N2,I       END TEST FOR UNIT GENERATOR DES      
*        
LA    N1,8(N1)  -I(6)+2 - START OF UNIT GEN DES       
*        
SR    L,L       -INDEX FOR INTAB    
*        
L     CONS,=F'262144'      
*        
L     INDEX,=X'C0000000'   
*        
LOOP204  DS    0H 
L     WK,0(N1)  -PICK UP I(N)       
LTR   WK,WK     -= OR - THAN 0      
BNL   X201       YES       
LPR   WK,WK      NO. MAKE IT POSITIVE        
LR    IJ3,INDEX  INDEX (THE J3 REGISTER)     
B     X204        
X201     SR    IJ3,IJ3    INDEX TO MODIFY INSTRUCTIONS
CR    WK,CONS   -GREATER THAN 262144
BH    X203       YES.      
AR    WK,I3      NO. INTAB(L)=I(WK+I(3)-1)   
BCTR  WK,0        
B     X204        
X203     SR    WK,CONS     
X204     SLL   WK,2        
AR    WK,I        
OR    WK,IJ3    -OR IN INDEX (J3 OR 0)       
ST    WK,INTAB(L) 
LA    L,4(L)    -BUMP TO NEXT WHOLE IN INTAB 
BXLE  N1,IDX,LOOP204       
*        
LM    IL1,IL7,INTAB      -MOVE INTAB IN REGISTERS     
*        
L     R511,=X'01FF0000'  -511 IN THE LEFT HALF-WORD   
*        
SR    J3,J3     -SET UP LOOP INDEX  
*        
L     NSAM,20(I)-I(5)      
SLL   NSAM,2     NUMBER OF SAMPLES  
*        
*        FOR ALL THE UNIT GENERATORS, THE LOOPS  GO   
*        FROM J3 TO NSAM IN STEPS OF IDX.    
*        
UNITGEN  B     UNITGEN(TYPE)      -BRANCH TO TYPE     
*        
B     OUT
B     OSC
B     AD2
B     RAN
B     ENV
B     STER        
B     AD3
B     AD4
B     MLT
B     FLT
B     RAH
B     RETURN      
B     OSC
*        
RETURN   RETURN (14,12)    
*        
EJECT    
************** OUTPUT BOX ********************************************* 
*        
OUT      DS    0H 
*        
*        OUT CODE:  OUT,I,O
*        EQUATION:  O(I)=O(I)+I(I)  
*        
MVC   OUTE1+2(1),L1      -MODIFY INST FOR INDEXED OR NON-INDEX 
OUTLOOP  DS    0H 
OUTE1    L     WK,0(IL1,0) 
A     WK,0(IL2,J3)
ST    WK,0(IL2,J3)
BXLE  J3,IDX,OUTLOOP       
B     RETURN      
*        
************** OSCILLATOR (POSITIVE OR NEGATIVE FREQUENCY) ************ 
*        
OSC      DS    0H 
*        
*        
*        OSC CODE I1,I2,O,F,S       
*        EQUATIONS:        
*  S(I+1)=S(I)+I2(I)       
*  O(I)=  I1(I)*F(S(I) MOD511)      
*  I(IL1) = AMPLITUDE      
*  I(IL2) = FREQUENCY (POSITIVE OR NEGATIVE) 
*  I(IL3) = OUTPUT
*  I(IL4) = FUNCTION       
*  I(IL5) = SUM   
*        SCALING: 
*  I1,I1,0-16PLACES; F-31PLACES     
*        
MVC   NOSC0+2(1),L5      -SUM INDEXED OR NON-INDEXED  
MVC   NOSC1+2(1),L2      -I2 INDEXED OR NON-INDEXED   
MVC   NOSC2+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   NOSC3+2(1),L5      -SUM INDEXED OR NON-INDEXED  
NOSC0    L     SUM,0(IL5,0)       -COMPUTED S(I+1)    
NOSCLOOP DS    0H 
NOSC1    L     WK,0(IL2,0)        -PICK UP FREQUENCY  
AR    SUM,WK    -SUM=SUM+FREQUENCY  
LTR   WK,WK     -IS FREQUENCY POS OR NEG     
BL    FREQNEG    NEGATIVE. 
FREQPOS  CR    SUM,R511    
BL    NOSCB       
SR    SUM,R511    
B     FREQPOS     
*        
FREQNEG  LTR   SUM,SUM     
BP    NOSCB       
AR    SUM,R511    
B     FREQNEG     
*        
NOSCB    LR    WK,SUM      
SRL   WK,16       
SLL   WK,2        
L     WK,0(IL4,WK)       F(S(I)MOD511)       
NOSC2    M     WKE,0(IL1,0)       -FUNCTION*AMPLITUDE 
SLDA  WKE,1       
ST    WKE,0(IL3,J3)      -I1(I)*F(S(I)MOD511)
NOSC3    ST    SUM,0(IL5,0)
BXLE  J3,IDX,NOSCLOOP      
B     RETURN      
*        
************** ADD TWO BOX ********************IF(CODE.NE.-22.)GO TO 236
	L=INP(JD+1)
	DO 836 KL=1,10
836	IF(L.EQ.IDAT(KL))GO TO 236
	INP(JD)=1
	GO TO 236
C   CHANGES DOTTED RHYTHMS TO '1'S.
736	IF(JF.NE.ISTAR)GO TO 236
	IAMP=-1
	INP(JD)=ISEMI
236	CONTINUE
	CALL EXIT
C   IF ERROR - THEN EXIT.

102	NX=INP(ML)
	IZ=ML
	ML=ML+1
	ISUB=13
	IF(NX.EQ.IBLA)GO TO 102
	JA=-1
	IF(NX.EQ.IPP)GO TO 1899
	IF(NX.EQ.IE)GO TO 2308
	IF(NX.EQ.IR)GO TO 4337
	IF(NX.EQ.ID)GO TO 7720
	IF(NX.EQ.II)GO TO 1899
	CALL EXIT
13	LPAR=VX1
	IF(NX.NE.II)GO TO 136
	INUM(LK)=LPAR
	GO TO 1299
136	IAMP=0
	IF(IALL.LT.0)ALL(LK,LPAR)=0
	CVT=0
	IF(LPAR.EQ.2)CVT=1.
	IF(LPAR.GT.NP(LK). RAN,I1,I2,O,S,T1,T2 
*        EQUATION:       O(I)=I1(I)*R1(I2(I))
*        
L     SUM,0(IL4)  
L     RN1,0(IL5)  
L     RN3,0(IL6)  
MVC   RANE1+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   RANE2+2(1),L2      -I2 INDEXED OR NON-INDEXED   
RANLOOP  DS    0H 
CR    SUM,R511    
BL    X320      -BR IF NO NEW NUMBER
X319     SR    SUM,R511    
CR    SUM,R511    
BNL   X319        
L     WK,28(I)    
M     WKE,=X'5EECE66D'     
LPR   WK,WK       
ST    WK,28(I)  -I(7)=IABS(I(7)*IMULT)       
S     WK,=X'40000000'     SUBTRACT 1/2       
SRA   WK,1        
LR    RN2,WK      
SR    RN2,RN3     
LR    RN1,RN3     
LR    RN3,WK      
B     X321        
X320     LR    RN2,RN3     
SR    RN2,RN1     
X321     LR    WK,RN2      
MR    WKE,SUM     
DR    WKE,R511    
AR    WK,RN1      
RANE1    M     WKE,0(IL1,0)
SLDA  WKE,3       
ST    WKE,0(IL3,J3)        
RANE2    A     SUM,0(IL2,0)
BXLE  J3,IDX,RANLOOP       
*        
LM    1,3,L4      
ST    SUM,0(1)  -I(L4)=SUM 
ST    RN1,0(2)  -I(L5)=RN1 
ST    RN3,0(3)  -I(L6)=RN3 
B     RETURN      
*        
************** ENVELOPE GENERATOR ************************************* 
*        
ENV      DS    0H 
*        
*        ENV CODE:       ENV,I1,F,O,I2,I3,I4,S        
*        EQUATION:       O(I)=I1(I)*F        
*        
*        
L     SUME,0(IL7,0)        
MVC   ENVE1+2(1),L4      -PARTITION 1        
MVC   ENVE2+2(1),L5      -PARTITION 2        
MVC   ENVE3+2(1),L6      -PARTITION 3        
MVC   ENVE4+2(1),L1        
ENVLOOP  DS    0H 
CR    SUME,R511   
BL    ENVA        
SR    SUME,R511   
*        
ENVA     C     SUME,=X'00800000'  -TEST FOR FIRST PARTITION    
*       (0-128 IN LEFT-HALFWORD)    
BH    ENVB        
ENVE1    A     SUME,0(IL4,0)        
B     ENVC        
*        
ENVB     C     SUME,=X'01000000'  -TEST FOR SECOND PARTITION   
*       (129-256 IN LEFT-HALFWORD)  
BH    ENVE3       
ENVE2    A     SUME,0(IL5,0)        
B     ENVC        
*        
ENVE3    A     SUME,0(IL6,0)      -THIRD PARITION     
*        
ENVC     LR    WK,SUME     
SRL   WK,16       
SLL   WK,2        
L     WK,0(IL2,WK)
ENVE4    M     WKE,0(IL1,0)
SLDA  WKE,1       
ST    WKE,0(IL3,J3)        
BXLE  J3,IDX,ENVLOOP       
ST    SUME,0(IL7,0)        
B     RETURN      
*        
************** STEREO OUTPUT BOX ************************************** 
*        
STER     DS    0H 
*        
*        STR CODE:       STR,I1,I2,O
*        EQUATION:
*   O(2I)=I1(I)   
*   O(2I+1)=I2(I) 
SLL   NSAM,1    -FOR STEREO
LA    IDX,8       
MVC   STER1+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   STER2+2(1),L2      -I2 INDEXED OR NON-INDEXED   
STERLOOP DS    0H 
STER1    L     WK,0(IL1,0) 
A     WK,0(IL3,J3)
ST    WK,0(IL3,J3)
STER2    L     WK,0(IL2,0) 
A     WK,4(IL3,J3)
ST    WK,4(IL3,J3)
BXLE  J3,IDX,STERLOOP      
B     RETURN      
*        
************** ADD THREE BOX ****************************************** 
*        
AD3      DS    0H 
*        
*        AD3 CODE       I1,I2,I3,O  
*        EQUATIONS:        
*  O(I)=I1(I)+I2(I)+I3(I)  
*        SCALING: 
*  I1,I2,I3,O-16 PLACES    
*        
MVC   AD3E1+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   AD3E2+2(1),L2      -I2 INDEXED OR NON-INDEXED   
MVC   AD3E3+2(1),L3      -I3 INDEXED OR NON-INDEXED   
AD3LOOP  DS    0H 
AD3E1    L     WK,0(IL1,0) 
AD3E2    A     WK,0(IL2,0) 
AD3E3    A     WK,0(IL3,0) 
ST    WK,0(IL4,J3)
BXLE  J3,IDX,AD3LOOP       
B     RETURN      
*        
************** ADD FOUR BOX ******************************************* 
*        
AD4      DS    0H 
*        
*        AD4 CODE       I1,I2,I3,I4,O        
*        EQUATIONS:        
*  O(I)=I1(I)+I2(I)+I3(I)+I4(I)     
*        SCALING: 
*  I1,I2,I3,I4,O-16 PLACES 
*        
MVC   AD4E1+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   AD4E2+2(1),L2      -I2 INDEXED OR NON-INDEXED   
MVC   AD4E3+2(1),L3      -I3 INDEXED OR NON-INDEXED   
MVC   AD4E4+2(1),L4      -I4 INDEXED OR NON-INDEXED   
AD4LOOP  DS    0H 
AD4E1    L     WK,0(IL1,0) 
AD4E2    A     WK,0(IL2,0) 
AD4E3    A     WK,0(IL3,0) 
AD4E4    A     WK,0(IL4,0) 
ST    WK,0(IL5,J3)
BXLE  J3,IDX,AD4LOOP       
B     RETURN      
*        
************** MULTIPLIER BOX ***************************************** 
*        
MLT      DS    0H 
*        
*        MLT CODE       I1,I2,O     
*        EQUATIONS:        
*  O(I)=I1(I)*I2(I)        
*        SCALING: 
*  I1,I2,O-16 PLACES       
*        
MVC   MLTE1+2(1),L1      -I1 INDEXED OR NON-INDEXED   
MVC   MLTE2+2(1),L2      -I2 INDEXED OR NON-INDEXED   
MLTLOOP  DS    0H 
MLTE1    L     WK,0(IL1,0) 
MLTE2    M     WKE,0(IL2,0)
SRDA  WKE,16      
ST    WK,0(IL3,J3)
BXLE  J3,IDX,MLTLOOP       
B     RETURN      
*        
************** SET NEW FUNCTION IN OSC OR ENV ************************* 
*        
FLT      DS    0H 
*        
B     RETURN      
*        
************** RANDOM AND HOLD GENERATOR ****************************** 
*        
RAH      DS    0H 
*        
*        RAH CODE:       RAH,I1,I2,O,S,T     
*        EQUATION:       O(I)=I1(I)*RN(I2(I))
*        
L     SUM,0(IL4,0)
L     RN,0(IL5,0) 
MVC   RAHE1+2(1),L1        
MVC   RAHE2+2(1),L2        
RAHLOOP  DS    0H 
LR    WK,RN       
CR    SUM,R511    
BL    RAHE1       
RAHA     SR    SUM,R511    
CR    SUM,R511    
BNL   RAHA        
*        
L     WK,28(I,0)-I(7)=ABS(I(7)*IMULT)        
M     WKE,=X'5EECE66D'     
LPR   WK,WK       
ST    WK,28(I,0)  
*        
S     WK,=X'40000000'      
LR    RN,WK       
*        
RAHE1    M     WKE,0(IL1,0)       -I(IL1,0)*RN        
SLDA  WKE,2       
ST    WKE,0(IL3,J3)        
*        
RAHE2    A     SUM,0(IL2,0)
BXLE  J3,IDX,RAHLOOP       
*        
ST    SUM,0(IL4,0)
ST    RN,0(IL5,0) 
*        
B     RETURN      
*        
*********************************************************************** 
INTAB    DS    0F 
L1       DC    F'0'        
L2       DC    F'0'        
L3       DC    F'0'        
L4       DC    F'0'        
L5       DC    F'0'        
L6       DC    F'0'        
L7       DC    F'0'        
L8       DC    F'0'        
L9       DC    F'0'        
*        
*        
LTORG    
*        
END      


****** FOLLOWING IS RANDOM NON-UPDATED JCL FOR IBM360 ******


//MUSLKED JOB (E404,429,1,3),LCSMITH,        
//STEP0 EXEC PGM=IEFBR14   
//DD DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,DISP=(OLD,DELETE),UNIT=2314 
/*       
//PASS1 EXEC PGM=IEWL,PARM='LET,LIST,MAP'    
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD     
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)   
//SYSPRINT DD  SYSOUT=A    
//SYSLMOD DD DSNAME=E404.MUSIC5(PASS1),VOLUME=SER=SYS09,      X
//    UNIT=2314, X
//    SPACE=(TRK,(40,5,2),RLSE),DISP=(NEW,KEEP)       
//SYSLIN DD DSNAME=E404.PASS1OBJ,VOLUME=SER=SYS08,UNIT=2314,  X
//    DISP=OLD    
/*       
//PASS2 EXEC PGM=IEWL,PARM='LET,LIST,MAP'    
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD     
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)   
//SYSPRINT DD  SYSOUT=A    
//LKED.SYSLMOD DD DSNAME=E404.MUSIC5(PASS2),VOLUME=SER=SYS09, X
//    UNIT=2314,DISP=(OLD,KEEP),   X
//    SPACE=(TRK,(40,5,2),RLSE)     
//SYSLIN     DD DSNAME=E404.PASS2OBJ,VOLUME=SER=SYS08,UNIT=2314,       X
//    DISP=OLD    
/*       
//NOTAPE  EXEC PGM=IEWL,PARM='LET,LIST,MAP'  
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=OLD     
//SYSUT1 DD DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)   
//SYSPRINT DD  SYSOUT=A    
//SYSLMOD     DD DSNAME=E404.MUSIC5(NOTAPE),VOLUME=SER=SYS09, X
//    UNIT=2314,DISP=(OLD,KEEP),   X
//    SPACE=(TRK,(40,5,2),RLSE)     
//SYSLIN     DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314,       X
//    DISP=OLD    
/*       
//PASS3  EXEC  PGM=IEWL,PARM='LET,LIST,MAP'  
//SYSLIB       DD  DSNAME=SYS1.FORTLIB,DISP=OLD       
//SYSUT1       DD  DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)     
//SYSPRINT     DD  SYSOUT=A
//SYSLMOD      DD  DSNAME=E404.MUSIC5(PASS3),VOLUME=SER=SYS09,X
//    UNIT=2314,DISP=OLD   
//SYSLIN       DD  DSNAME=E404.SAMOUT,VOLUME=SER=SYS09,UNIT=2314,      X
//    DISP=OLD    
//    DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314,     X
//    DISP=OLD    
/*       
//MUSLKED JOB (Y077MUS,427,1,3),DO ROTHY,MSGLEVEL=1    
//DELETE  EXEC  PGM=IEHPROGM        
//SYSPRINT  DD  SYSOUT=A   
//SYSUT1 DD VOLUME=SER=SYS09,DISP=OLD,UNIT=2314       
//SYSIN  DD *     
     SCRATCH  DSNAME=E404.MUSIC5A,VOL=2314=SYS09      
/*       
//PASS3  EXEC  PGM=IEWL,PARM='LET,LIST,MAP'  
//SYSLIB       DD  DSNAME=SYS1.FORTLIB,DISP=OLD       
//SYSUT1       DD  DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)     
//SYSPRINT     DD  SYSOUT=A
//SYSLMOD      DD  DSNAME=E404.MUSIC5A(PASS3),VOLUME=SER=SYS09,        X
//    UNIT=2314,DISP=(NEW,KEEP),SPACE=(TRK,(10,2,1))  
//SYSLIN       DD  DSNAME=E404.SAMOUT,VOLUME=SER=SYS09,UNIT=2314,      X
//    DISP=OLD    
//    DD  DSNAME=E404.SAMGEN,VOLUME=SER=SYS09,DISP=OLD,       X
//    UNIT=2314   
//    DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314,     X
//    DISP=OLD    
/*       
//PASS3  EXEC  PGM=IEWL,PARM='LET,LIST,MAP'  
//SYSLIB       DD  DSNAME=SYS1.FORTLIB,DISP=OLD       
//SYSUT1       DD  DSNAME=SYS1.UT1,DISP=OLD,DCB=(KEYLEN=0)     
//SYSPRINT     DD  SYSOUT=A
//SYSLMOD      DD  DSNAME=E404.MUSIC5A(NOTAPE),VOLUME=SER=SYS09,       X
//    UNIT=2314,DISP=(OLD,KEEP)     
//SYSLIN       DD  DSNAME=E404.SAMGEN,VOLUME=SER=SYS09,DISP=OLD,       X
//    UNIT=2314   
//    DD DSNAME=E404.PASS3OBJ,VOLUME=SER=SYS08,UNIT=2314,     X
//    DISP=OLD    
/*       
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1    
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC PGM=PASS1     
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
//GO.SYSIN DD *   
COMMENT:TEST SCORE TO CHECK MUSIC V PROGRAMS AND UNIT GENERATORS;       
COMMENT:USE DUMMY CONVT PROVIDED WITH PASS 2  AND DEBUG SAMOUT;
COMMENT:INSTRUMENT DEFINITIONS;     
COMMENT:OUTPUT BOX;INS 0 1;OUT P5 B1;END;    
COMMENT:OSCILLATOR;INS 0 2;OSC P5 P6 B2 F1 P30;OUT B2 B1;END;  
COMMENT:ADD TWO GENERATOR;INS 0 3;AD2 P5 P6 B2;OUT B2 B1;END;  
COMMENT:RANDOM GENERATOR;INS 0 4;RAN P5 P6 B2 P7 P30 P29;OUT B2 B1;END; 
COMMENT:ENVELOPE;INS 0 5;ENV P5 F2 B2 P6 P7 P8 P30;OUT B2 B1;END;       
COMMENT:STEREO OUTPUT BOX;INS 0 6;STR V1 V2 B1;END;   
COMMENT:ADD THREE GENERATOR;INS 0 7;AD3 P5 P6 P7 B2;OUT B2 B1;END;      
COMMENT:ADD FOUR GENERATOR;INS 0 8;AD4 P5 P6 P7 P8 B2;OUT B2 B1;END;    
COMMENT:MULTIPLIER;INS 0 9;MLT P5 P6 B2;OUT B2 B1;END;
COMMENT:DUMMY INST , FILTER OMITTED;INS 0 10;OUT P5 B1;END;    
COMMENT:RANDOM AND HOLD;INS 0 11;RAH P5 P6 B2 P7 P30;OUT B2 B1;END;     

COMMENT:SETTING INTEGERS AND VARIABLES;      
COMMENT:SAMPLING RATE 1000 HZ;SIA 0 4 1000;  
COMMENT:STEREO BOX INPUTS;SV3 0 1 500 999;   
COMMENT:FUNCTION DEFINITIONS;       
GEN 0 3 1 0 10 10 10 10 0 -10 -10 -10 -10 0; 
GEN 0 1 2 0 0 .990 127 .990 255 0 383 0 511; 
GEN 0 2 3 1 1;    

COMMENT:NOTE CARDS;        
NOT 0.005 2 .03 1000 51.1; 
NOT .04 3 .005 657 343;    
NOT 0 1 .003 777; 
NOT .05 4 .03 1000 128 512;
NOT .09 5 .032 1000 16 8 16;        
COMMENT:TO SET MONO;SI3 .16 8 0;    
NOT .13 5 .010 1000 32 64 32;       
COMMENT:TO SET STEREO;SI3 .14 8 1;  
NOT .15 6 .005;   
NOT .16 7 .005 600 200 301;
NOT .18 9 .005 50 20;      
NOT .17 8 .005 600 150 60 301;      
NOT .22 11 .03 1000 128;   
TER .26; 
/*       
//PASS2 EXEC PGM=PASS2     
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314    
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
/*       
//PASS3  EXEC  PGM=NOTAPE  
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
/*       
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1    
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC PGM=PASS1     
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
//GO.SYSIN DD *   
/*       
//PASS2 EXEC PGM=PASS2     
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314    
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
/*       
//PASS3  EXEC  PGM=PASS3   
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP),      X
//    VOLUME=SER=SAMPLE,DSNAME=TAPE,        X
//    DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)   
/*       
/*RUN   IDLE      
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1    
//JOBLIB DD DSNAME=E404.MUSIC5A,VOLUME=SER=SYS09,UNIT=2314,   X
//    DISP=(OLD,PASS)      
//       DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC PGM=PASS1     
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
//GO.SYSIN DD *   
/*       
//PASS2  EXEC  FORTHCLG    
//FORT.SYSIN  DD  *        
/*       
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD  
//LKED.SYSIN DD * 
      INCLUDE PASS2(PASS2) 
      ENTRY MAIN  
/*       
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314 
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//PASS3  EXEC  PGM=PASS3   
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP),      X
//    VOLUME=SER=SAMPLE,DSNAME=TAPE,        X
//    DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)   
/*       
//MUSEXEC JOB (Y077MUS,429,2,3,,,,T),'YOUR NAME',MSGLEVEL=1    
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC FORTHCLG      
//FORT.SYSIN DD * 
/*       
//LKED.PASS1 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD  
//LKED.SYSIN DD * 
      INCLUDE PASS1(PASS1) 
      ENTRY MAIN  
/*       
//GO.FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//GO.FT05F001 DD DDNAME=SYSIN       
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSIN DD *   
/*       
//PASS2  EXEC  FORTHCLG    
//FORT.SYSIN  DD  *        
/*       
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD  
//LKED.SYSIN DD * 
      INCLUDE PASS2(PASS2) 
      ENTRY MAIN  
/*       
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314 
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//PASS3  EXEC  PGM=PASS3   
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP),      X
//    VOLUME=SER=SAMPLE,DSNAME=TAPE,        X
//    DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)   
/*       
//MUSEXEC JOB (Y077MUS,429,1,3,,,,T),'YOUR NAME',MSGLEVEL=1    
//JOBLIB DD DSNAME=E404.MUSIC5A,VOLUME=SER=SYS09,UNIT=2314,   X
//    DISP=(OLD,PASS)      
//       DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC PGM=PASS1     
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
//GO.SYSIN DD *   
/*       
//PASS2 EXEC PGM=PASS2     
//FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314    
//FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
/*       
//PASS3  EXEC  PGM=PASS3   
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
//GO.SAMPLES DD UNIT=TAPE7,DISP=(NEW,KEEP),LABEL=(,BLP),      X
//    VOLUME=SER=SAMPLE,DSNAME=TAPE,        X
//    DCB=(RECFM=F,LRECL=14592,BLKSIZE=14592,DEN=2)   
/*       
//MUSEXEC JOB (E404,429,1,5),LCSMITH
//JOBLIB DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,    X
//    DISP=(OLD,PASS)      
//PASS1 EXEC PGM=PASS1     
//FT02F001 DD DSNAME=TEM2,DISP=(NEW,PASS),VOLUME=SER=SYS03,   X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//FT05F001 DD DDNAME=SYSIN 
//FT06F001 DD SYSOUT=A     
//GO.SYSIN DD *   
INS 0 1; 
OSC P5,P6,B2,F1,P30;       
OSC B2,P7,B2,F2,P29;       
OUT B2,B1;        
END;     
GEN 0,2,2,1,1;    
GEN 0,1,1,0,0,.99,20,.99,491,0,511; 
SIA 0,4,10000;    
NOT 0,1,.4,60,2700;        
NOT .2,1,1,40,2800;        
NOT 1.3,1,.25,60,101;      
NOT 1.5,1,.1,20,440;       
NOT 3,1,4,10,230; 
TER 7;   
/*       
//PASS2  EXEC  FORTHCLG    
//FORT.SYSIN  DD  *        
       SUBROUTINE CONVT    
       COMMON IP,P,G       
       DIMENSION IP(10),P(100),G(1000)       
       IF(P(1)-1.0)102,100,102      
100    IF(P(3)-1.0)102,101,102      
101    P(5)=10.0**(P(5)/20.0)       
       P(7)=511.0*P(6)/G(4)
       P(6)=511.0/(P(4)*G(4))       
       IP(1)=7    
102    RETURN     
       END        
/*       
//LKED.PASS2 DD DSNAME=E404.MUSIC5,VOLUME=SER=SYS09,UNIT=2314,DISP=OLD  
//LKED.SYSIN DD * 
      INCLUDE PASS2(PASS2) 
      ENTRY MAIN  
/*       
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,PASS),VOLUME=SER=SYS03,UNIT=2314 
//GO.FT03F001 DD DSNAME=TEM3,DISP=(NEW,PASS),VOLUME=SER=SYS03,X
//    SPACE=(TRK,(10,2),RLSE),UNIT=2314,    X
//    DCB=(RECFM=V,LRECL=796,BLKSIZE=800)    
//PASS3  EXEC  PGM=NOTAPE  
//GO.FT02F001 DD DSNAME=TEM2,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT03F001 DD DSNAME=TEM3,DISP=(OLD,DELETE),VOLUME=SER=SYS03,       X
//    UNIT=2314   
//GO.FT06F001 DD SYSOUT=A  
//GO.SYSUDUMP DD SYSOUT=A  
/*